home *** CD-ROM | disk | FTP | other *** search
/ Aminet 12 / Aminet 12 (1996)(GTI - Schatztruhe)[!][Jun 1996].iso / Aminet / dev / e / framework.lha / fw / bag.e < prev    next >
Encoding:
Text File  |  1996-01-28  |  1.3 KB  |  75 lines

  1.  
  2. -> a bag is an unordered collection of elements.
  3. -> Elements can occur any number of times.
  4. -> Time complexity for data adding is O(1).
  5. -> Time complexity for data searching is O(n).
  6. -> Space complexity is O(n).
  7.  
  8. -> Copyright © Guichard Damien 01/04/1996
  9.  
  10. OPT MODULE
  11. OPT NOWARN
  12.  
  13. MODULE 'fw/comparable'
  14.  
  15. EXPORT OBJECT bag OF comparable
  16.   next:PTR TO bag
  17. ENDOBJECT
  18.  
  19. -> Count elements.
  20. PROC count() OF bag
  21.   DEF n=0
  22.   LOOP
  23.     self:=self.next
  24.     IF self=NIL THEN RETURN n
  25.     INC n
  26.   ENDLOOP
  27. ENDPROC
  28.  
  29. -> Is bag empty?
  30. PROC empty() OF bag IS self.next=NIL
  31.  
  32. -> Add an element to the bag.
  33. PROC add(e:PTR TO bag) OF bag
  34.   e.next:=self.next
  35.   self.next:=e
  36. ENDPROC
  37.  
  38. -> Find an element in the bag.
  39. PROC find(e:PTR TO bag) OF bag
  40.   LOOP
  41.     self:=self.next
  42.     IF self=NIL THEN RETURN NIL
  43.     IF e.isEqualTo(self) THEN RETURN self
  44.   ENDLOOP
  45. ENDPROC
  46.  
  47. -> Print elements.
  48. PROC print() OF bag
  49.   LOOP
  50.     self:=self.next
  51.     IF self=NIL THEN RETURN
  52.     self.out()
  53.   ENDLOOP
  54. ENDPROC
  55.  
  56. -> Walk through the bag.
  57. PROC traverse(proc) OF bag
  58.   LOOP
  59.     self:=self.next
  60.     IF self=NIL THEN RETURN
  61.     proc(self)
  62.   ENDLOOP
  63. ENDPROC
  64.  
  65. -> NEVER call this method. Use loadObject() instead.
  66. PROC load() OF bag
  67.   IF self.next THEN self.next:=self.loadObject()
  68. ENDPROC
  69.  
  70. -> NEVER call this method. Use storeObject() instead.
  71. PROC store() OF bag
  72.   IF self.next THEN self.next.storeObject()
  73. ENDPROC
  74.  
  75.